30 天前,我從一場雞同鴨講的需求會議開講,一路把鼠勾以怎麼問、怎麼評分、怎麼挑戰、怎麼吐出一份 PRD 全拆了一遍。今天最後一篇,講四件一直被我塞在正文之外、但其實撐著整個工具的東西:怎麼防它被玩壞、怎麼讓它一直長卻不長歪、怎麼知道它到底有沒有幫到人,還有一個到現在都沒填平的坑。

鼠勾以只在內部開放,不是放到網路上人人能用。但就算只給同事用,也難保不會有人手癢,想看看 Instructions 裡到底寫了什麼,或想叫它跳出角色講點別的。與其賭沒人會試,不如先防起來,順便當作我自己練習怎麼把一個 GPT 的後門堵好。所以鼠勾以的安全規則擺在 Instructions 最前面,而且結尾再重申一次。核心幾條:
為什麼同一套規則要放最前面、又放最後面?因為 prompt 注入最常用的手法就是「前面那些都不算,現在聽我的」。把安全規則釘在頭尾兩端、標成最高優先級,兩個入口都堵上。這段技術含量不高,但是上線前最不能省的一塊,少防一道,整份知識庫就有機會被問出來。
工具不是做完就收工,它每週都在改。改動要是沒紀律,三個月後就沒人記得當初為什麼這樣設計,更糟的是同一個地方被改回去又改過來。撐住這件事的有兩個機制。
第一個是 Backlog。每一條工程師回饋、每一個我自己跑測試時發現的破洞,都先進 Backlog 排隊,不直接動手做。狀態從想法、討論、規劃、進行到完成一路走,不准跳級、不准重用編號。後來還加了一欄優先級,免得想做的事一多就全憑當下心情挑。完成或捨棄的項目,完整內容折到另一個歸檔檔,主檔只留待辦跟一張索引表,才不會越長越難翻。
第二個是 CHANGELOG。每次改動留一筆:時間、版本、動到哪些檔、為什麼改。這份是專案唯一的正式紀錄。早期版本紀錄是塞在 README 裡的,結果改一次要同步好幾個地方,常常漏。後來索性把它抽出來當單一權威,README 只負責指過去,不再自己記一份。
這兩個檔案我一開始根本沒想到要做。是後來自己改著改著,碰到幾次困擾才補上的:想改某個地方卻發現它牽動一堆別的檔、過幾週完全忘記上次到底改了什麼、找 AI 幫忙改動時它也接不上前因後果,東西愈長愈亂。踩了幾次之後才意識到,這種看起來最不起眼的紀錄檔,反而是讓工具能一直長下去的關鍵。今天少寫一筆 CHANGELOG,未來某天就得花一個下午考古「這行為到底是 bug 還是當初故意的」。
Backlog 跟 CHANGELOG 管的是「別長歪」,但它們有個盲區:只記得到我「有意識到」的問題。我沒想到的破洞,不會自己跳進 Backlog。所以每隔一陣子,我會做一次比較大的體檢。
做法是派好幾個 AI 代理分頭跑:有的逐檔盤點規則、有的上網查需求工程的標準跟競品怎麼做、有的用不同視角互相評審、還有的專門扮唱反調的來挑刺。最後把結果收斂成一張評分表,照十個維度各打一個分數,從「隱性需求挖掘」「多輪對話穩不穩」到「規則遵循」都有。這十個維度不是我自己拍腦袋訂的,是對著幾份業界的需求規格標準(ISO 29148、BABOK、Volere 那些)跟兩三篇 LLM 訪談的研究列出來的,免得我又用自己的直覺幫自己打分。
第一次跑完,結果落在及格邊緣。把各維度攤開看,需求語句與驗收標準、PRD 結構完整度、提問品質、需求覆蓋率相對穩定;多輪穩定性與規則遵循則偏弱。每個維度還拆成三種視角各打一次:需求方 PM 使用者、SA 接收端、產品維護者,三個角色在不同維度上的看法不完全一樣,例如提問品質需求方 PM 給得高、SA 給得保守,這種落差本身就是線索。
分數有點難看,但比分數更有用的是它點出來的兩個系統性問題。一個是我前面 Day 8 講過的,防漂移的文件自己在漂移。另一個更難堪,叫「驗證債」:我連續改了好幾版,每版都寫「待線上回歸」,結果一直沒真的補跑,等於一疊沒驗收的改動全堆在那裡,自己跟自己說做完了。表上最低的那個維度,扣的就是這筆債,工具最核心的承諾,挑戰會不會堅持、長對話評分還在不在,那時候一筆真實對話的證據都沒有。
這兩個問題的共同點,是它們都躲在「我以為顧好了」的地方。沒有哪個功能真的壞掉,就是一堆我自以為做完、其實沒收尾的事。這種洞最躲得過日常開發,每天盯著看反而看不見,得隔一段距離、換一批不帶預設的眼睛才照得出來。體檢的價值就在這,它逼我承認分數沒那麼漂亮,再把難看的地方一條條變成 Backlog 上的待辦。
工具上線之後,我最想知道的只有一件事:它到底有沒有幫到人。改了這麼多版,要是沒人回我一句「這裡卡住」「這段問太細」,我只能憑跑測試時的手感瞎猜。一個還在長的工具,最怕改進全靠作者一個人想,想到哪改到哪。
最直覺的收法是丟一句「有問題歡迎密我」,但這招我不想用,原因有兩個:
說到底我要的不是一堆人各自來敲我,而是一個固定的落點:讓回饋自己流進同一個地方,沉澱下來、能排序、能回頭翻。這樣我才看得出「這週最多人卡的是哪一塊」,而不是被零散訊息推著走。
理想做法是讓鼠勾以自己把回饋送回來:使用者拿到 PRD 的當下,工具在背景默默記下他卡在哪、結尾再問一兩題,整包直接回傳到我這邊,使用者什麼都不用多做。我也真照這個方向架了,然後撞上公司的 DLP。自動回傳要嘛走 Mail 連接器、要嘛開一個 HTTP 入站接口收資料,這兩條在公司租戶裡全被資安政策擋掉,連 Power Automate 想接 HTTP 觸發器都還得另外要 Premium 授權。完全不需要使用者動手的那條路,在這個環境走不通。
最後落地的是退一步的版本:鼠勾以產出 PRD 後,全程被動側錄使用者卡住的地方,結尾邀他做個自願的小訪談(一次一題、ABCD,挑了想改的還會追是哪個區塊),再把這些整理成一塊可以直接複製的回饋區塊貼在對話裡,附一個 MS Forms 表單連結。使用者複製、貼上、送出,三步收工,我這邊也只剩一個表單要看。不完美,中途就關掉視窗的人我還是抓不到,但至少願意講的人,講起來不費力,而我終於有了那個「同一個落點」。這也順手列進 roadmap:哪天 DLP 鬆綁、或公司開了 Power Automate Premium,我就把當初設計好的那套 OpenAPI 接回去,升級成真正的自動回傳。
這 30 天寫得滿開心的,一邊整理一邊還在想接下來要拿鼠勾以再玩什麼。結果快收尾的時候翻到 OpenAI 的說明頁,發現 Custom GPT 的規則改了。
重點是這幾條(以官方說明頁為準,之後可能還會再變):
但如果你看完這 30 天想照著做一個自己的 GPT,手上又是個人帳號,那就得先確認你的建立權限還在不在;已經有 GPT 的話,先別手癢按刪除。真的不能建,這 30 天講的東西也不是只能長在 Custom GPT 上,那些提問順序、區塊拆法、評分邏輯本來就寫在 Instructions 跟 Knowledge 裡,貼進一般對話或別的工具照樣能跑,只是每次都要自己帶一次而已。
官方說明頁:https://help.openai.com/en/articles/8554397-creating-and-editing-gpts
30 天從一場失敗的會議開始,講到一個工具怎麼問問題、怎麼打分、怎麼防自己被玩壞,最後也把還沒做好的地方寫出來。鼠勾以不是一個完成的產品,它還在持續調整。這個系列記錄的是邊做邊踩的過程,以及每個坑後來怎麼補。
如果你手上也有一個想慢慢養大的東西,不管它是不是 GPT,希望這 30 天裡有那麼幾篇,剛好幫上一點忙。
謝謝你看到這裡。
這是 iThome 鐵人賽系列文章的最後一篇。30 天,完賽。